Para este checkpoint, será utilizada a base de dados do github, onde iremos trabalhar com a quantidade de commits que cada linguagem recebeu na plataforma. Então, primeiramente iremos importar os dados:
commits = read_csv(here("data/github-users-committing-filetypes.csv"))
names(commits)
## [1] "file_extension" "month_day" "the_month" "the_year"
## [5] "users"
No entanto, essa base de dados é disponibilzado os dias, mês e ano que correspondente aos usuários que “commitaram” com a respectiva linguagem. Então, dessa forma para facilitar a manipulação dos dados e responder com melhor precisão as perguntas propostas, iremos criar as colunas para data, dia da semana e outra indicando que é final de semana.
commits <- commits %>%
mutate(date = paste(the_year,the_month,month_day,sep='-') %>%
as.Date(.))
commits$weekday <- weekdays(as.Date(commits$date))
commits <- commits %>%
mutate(is_weekend = ifelse(weekday %in% c("sábado","domingo"),TRUE,FALSE))
Depois de realizar este processo de manipulação do nosso banco, podemos observar o que há nele com a visualização abaixo:
Antes de tudo, é bom notar que para o ano de 2017 só temos dados até o primeiro semestre, então algumas linguagens possuem poucas ocorrências devido a isso. Mas, com este gráfico, podemos notar que linguagens como C não chegaram nem a metade da sua ocorrência no ano de 2016, durante o primeiro semestre de 2017, este fator acontece com outras linguagens como Java e c++. Também podemos destacar que há extensões que só foram utilizadas até então no ano de 2016, isto ocorre com cc. Outro ponto é extensões que já no primeiro semestre de 2017 já superaram mais da metade do ano anterior, isto aconteceu com a extensão woff, ou seja, pode ser uma possível extensão em potencial na comunidade tecnológica.
Depois de visto alguns dos dados contidos no banco que estemos trabalhando, vamos responder as perguntas propostas ao longo do notebook.
Obs.: Contanto no hemisfério Sul: Férias de verão: mês de janeiro Férias de inverno: mês de junho
ferias_inverno <- commits %>%
filter(the_month == 6,
file_extension %in% c("go", "py", "rb"))
ferias_verao <- commits %>%
filter(the_month == 1,
file_extension %in% c("go", "py", "rb"))
ferias_inverno %>%
ggplot(aes(x = file_extension,
y = users,
fill = file_extension)) +
geom_col() +
labs(title = "Férias de inverno")
ferias_verao %>%
ggplot(aes(x = file_extension,
y = users,
fill = file_extension)) +
geom_col() +
labs(title = "Férias de verão")
Podemos notar que a linguagem python se destaca no grupo com relação aos usuários da plataforma, seguida de ruby e depois go e que nas férias de inverno no Hemifério Sul(inverso no Hemisfério Norte) há uma maior quantidade de usuários que utilizam essas linguagens.
amostra_ferias_inverno <- sample_n(ferias_inverno, 50)
colnames(amostra_ferias_inverno) <- c("file_extension","users_ferias_inverno")
amostra_ferias_verao <- sample_n(ferias_inverno, 50)
colnames(amostra_ferias_verao) <- c("file_extension","users_ferias_verao")
b <- bootstrap(amostra_ferias_inverno,
mean(users_ferias_inverno))
media_ferias_inverno <- CI.bca(b, probs = c(.025, .975))
media_ferias_inverno
## 2.5% 97.5%
## mean(users_ferias_inverno) 13.56 18.07392
b <- bootstrap(amostra_ferias_verao,
mean(users_ferias_verao))
media_ferias_verao <- CI.bca(b, probs = c(.025, .975))
media_ferias_verao
## 2.5% 97.5%
## mean(users_ferias_verao) 14.16 19.6
df = data.frame(rbind(media_ferias_inverno,
media_ferias_verao))
df$medida = row.names(df)
df %>%
ggplot(aes(x = medida, ymin = X2.5., ymax = X97.5.)) +
geom_errorbar(width = .2)
Para fazer o intervalo de confiança entre a quantidade de usuários nas férias de inverno e de verão, opitei por utilizar a estatística da média. E com o gráfico acima, não podemos dizer de certeza algo, pois os intervalos de interceptam.
py_go_rb <- commits %>%
filter(file_extension %in% c("go", "py", "rb"))
Para gerar essa visualização filtrei os anos para não ficar muito poluída.
py_go_rb %>%
filter(the_year == 2017) %>%
ggplot(aes(x = date,
y = users,
color = file_extension)) +
geom_line() +
labs(title = "Número de usuários ao longo do ano de 2017")
py_go_rb %>%
filter(the_year == 2016) %>%
ggplot(aes(x = date,
y = users,
color = file_extension)) +
geom_line() +
labs(title = "Número de usuários ao longo do ano de 2016")
Podemos observar que em todas as linguagens há oscilações, provavelmente está relacionado ao decrescimo de usuários durante o final de semana, pois há um padrão entre os picos e vales. Mas voltando a nossa observação, podemos notar que a linguagem python cresce entre no primeiro semestre do ano de 2016 e cai por um período do segundo semestre, cresce e cai novamente com relação a quantidade de usuários. Já a linguagem Ruby tem muitos usuários utilizando no primeiro semestre, assim como python, mas que no segundo semestre de 2016 cai um pouco sua utilização mas mantém um padrão. E Go, mantém um padrão entre os usuários, tendo crescimento nos últimos meses de 2016. No entanto, o interessante dessa visualização é notar que no mês de janeiro todas as linguagens cai bastante entre os usuários, talvez um dos fatores seja o inverno rigoso no hemisfério norte e as férias de verão no Hemisfério Sul.
java_cpp_js <- commits %>%
filter(file_extension %in% c("java", "cpp", "js"))
Assim como na pergunta anterior, também filtrei o dado do ano para facilitar na visualização.
java_cpp_js %>%
filter(the_year == 2017) %>%
ggplot(aes(x = date,
y = users,
color = file_extension)) +
geom_line() +
labs(title = "Ano 2017")
java_cpp_js %>%
filter(the_year == 2016) %>%
ggplot(aes(x = date,
y = users,
color = file_extension)) +
geom_line() +
labs(title = "Ano 2016")
Como podemos observar, ao longo do tempo, apesar de ainda terem uma grande quantidade commits, a utilização desse grupo de linguagens está caindo entre os usuários, principalmente C++.
js_pop <- java_cpp_js %>%
filter(file_extension == "js")
cpp_pop <- java_cpp_js %>%
filter(file_extension == "cpp")
java_pop <- java_cpp_js %>%
filter(file_extension == "java")
Fazendo IC
js_boot <- bootstrap(js_pop, mean(users))
media_js <- CI.bca(js_boot, probs = c(.025, .975))
media_js
## 2.5% 97.5%
## mean(users) 6085.821 6361.574
cpp_boot <- bootstrap(js_pop, mean(users))
media_cpp <- CI.bca(cpp_boot, probs = c(.025, .975))
media_cpp
## 2.5% 97.5%
## mean(users) 6080.061 6361.082
java_boot <- bootstrap(java_pop, mean(users))
media_java <- CI.bca(java_boot, probs = c(.025, .975))
media_java
## 2.5% 97.5%
## mean(users) 3060.258 3204.168
df = data.frame(rbind(media_js,
media_java,
media_cpp))
## Warning in data.row.names(row.names, rowsi, i): some row.names duplicated:
## 2,3 --> row.names NOT used
df$medida = row.names(df)
df %>%
ggplot(aes(x = medida, ymin = X2.5., ymax = X97.5.)) +
geom_errorbar(width = .2)
Dessa forma, fazendo o intervalo de confiança, não podemos afirmar nada entre a linguagem javascript e c++ pois há intercepto entre as duas, mas para a linguagem java há uma discrepância entre os intervalos das outras linguagens do grupo.
js_independencias <- java_cpp_js %>%
filter(the_month %in% c(7,9),
month_day %in% c(4,7),
file_extension == "js")
js_independencias %>%
plot_ly(x = ~date,
y = ~users,
size = ~users,
color = ~date,
type = "scatter") %>%
layout(title = "Quantidade de usuários da linguagem javascript nos dias da independências do EUA e do Brasil")
## No scatter mode specifed:
## Setting the mode to markers
## Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
Primeiramente houveram poucos ocorrências de usuários nessas datas, mas podemos ver que na data da proclamação do Brasil tem um menor número de users, enquanto no 4 de julho, a independência dos EUA tiveram bastante usuários utilizando a plataforma para essa linguagem.